5、跑步锻炼

题目 跑步锻炼

image-aa0941a3

思路分析

组合拳一套

按日期枚举

每天加1km

碰到1号和星期一 而外加1km

1号比较好判断

星期一就麻烦点 可以做个计数

因为第一天是星期六 要隔三天是星期一

所以天数模上7 如果等于3 就说明是星期一

image-98c955a5

代码实现

#include<bits/stdc++.h>

using namespace std;

int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

bool is_leap(int y){

	return y%100 && y%4==0 || y%400==0;

}

int getdays(int y,int m){

	return days[m]+(m==2 && is_leap(y));

}

void nextday(int &y,int &m,int &d){

	d++;

	if(d>getdays(y,m)){

		d=1;

		m++;

		if(m>12){

			m=1;

			y++;

		}

	}

}

int main()

{

	int cury=2000,curm=1,curd=1;

	int cnt=1;

	int sum=0;

	while((cury<2020) ||

		  (cury==2020 && curm<10) ||

		  (cury==2020 && curm==10 && curd<2)){

		  	if(curd==1 || cnt%7==3){

		  		sum++;

			}

			sum++;

		  	nextday(cury,curm,curd);

		  	cnt++;

	}

	cout<<sum;

	return 0;

 }

同类题型

视频讲解


⬅️ 4、蛇形填数 🏠 00-刷题理模型 ➡️ 6、七段码